package com.i2works.smartluolong.utils.base;

/**
 * 正则表达式仓库
 *
 * @author koal <koal@vip.qq.com>
 * @date 2017/5/18 18:24
 */
public class RegExConstant {

    /** 整数  */
    public static final String  INTEGER="^-?[1-9]\\d*$";

    /**  正整数 */
    public static final String Z_INDEX="^[1-9]\\d*$";

    /**负整数 */
    public static final String NEGATIVE_INTEGER="^-[1-9]\\d*$";

    /** 数字 */
    public static final String NUMBER="^([+-]?)\\d*\\.?\\d+$";

    /**正数 */
    public static final String POSITIVE_NUMBER="^[1-9]\\d*|0$";

    /** 负数 */
    public static final String NEGATINE_NUMBER="^-[1-9]\\d*|0$";

    /** 浮点数 */
    public static final String FLOAT="^([+-]?)\\d*\\.\\d+$";

    /** 正浮点数 */
    public static final String POSTTIVE_FLOAT="^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$";

    /** 负浮点数 */
    public static final String NEGATIVE_FLOAT="^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$";

    /** 非负浮点数（正浮点数 + 0） */
    public static final String UNPOSITIVE_FLOAT="^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$";

    /** 非正浮点数（负浮点数 + 0） */
    public static final String UN_NEGATIVE_FLOAT="^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$";

    /** 邮件 */
    public static final String EMAIL="^\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}$";

    /** 颜色 */
    public static final String COLOR="^[a-fA-F0-9]{6}$";

    /** url */
    public static final String URL="^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$";

    /** 仅中文 */
    public static final String CHINESE="^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";

    /** 仅ACSII字符 */
    public static final String ASCII="^[\\x00-\\xFF]+$";

    /** 邮编 */
    public static final String ZIPCODE="^\\d{6}$";

    /** 验证码 */
    public static final String IMGCODE="^\\d{4}$";

    /** 手机 */
    public static final String PHONE="^1[34578]\\d{9}$";

    /** ip地址 */
    public static final String IP4="^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$";

    /** 非空 */
    public static final String NOTEMPTY="^\\S+$";

    /** 图片  */
    public static final String PICTURE="(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$";

    /**  压缩文件  */
    public static final String RAR="(.*)\\.(rar|zip|7zip|tgz)$";

    /** 日期 */
    public static final String DATE="^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";

    /** QQ号码  */
    public static final String QQ_NUMBER="^[1-9]*[1-9][0-9]*$";

    /** 电话号码的函数(包括验证国内区号,国际区号,分机号) */
    public static final String TEL="^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$";

    /** 验证账号。匹配由汉字、数字、英文字母、下划线组成的字符串,首位不能是下划线,长度4-20位,一个汉字算2个字符 */
    public static final String USERNAME="^[\\u4e00-\\u9fa5]{2,10}|^[a-zA-Z0-9\\u4e00-\\u9fa5]{1}[a-zA-Z0-9-\\u4e00-\\u9fa5_]{3,19}$";

    /**验证账号或邮箱。**/
    public static final String USERNAME_EMAIL="^([\\u4e00-\\u9fa5]{2,10}|^[a-zA-Z0-9\\u4e00-\\u9fa5]{1}[a-zA-Z0-9-\\u4e00-\\u9fa5_]{3,19})$|^(\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14})$";

    /**验证密码。
     * 原始：^[a-zA-Z0-9]{1}[a-zA-Z0-9~!@#$^&_\-+\=\.]{5,18}$
     * 匹配：数字、英文、~、!、@、#、$、^、&、_、-、+、=、.
     * fixme 20170519
     * 匹配：数字、英文、~、!、@、#、_、.号
     * */
    public static final String PASSWORD="^[a-zA-Z0-9]{1}[a-zA-Z0-9~!@#_\\.]{5,18}$";

    /** 字母 */
    public static final String LETTER="^[A-Za-z]+$";

    /** 大写字母  */
    public static final String LETTER_U="^[A-Z]+$";

    /** 小写字母 */
    public static final String LETTER_I="^[a-z]+$";

    /** 身份证  */
    public static final String IDCARD ="^(\\d{15}$|^\\d{18}$|^\\d{17}(\\d|X|x))$";

    /**验证数字长度(6-18位)*/
    public static final String NUMBER_LENGTH="^\\d{6,18}$";

    /**验证字符串长度(6-18位)*/
    public static final String STRING_LENGTH="^\\d{4,20}$";

    /**验证两位数*/
    public static final String TWO＿POINT="^[0-9]+(.[0-9]{2})?$";

    /**验证一个月的31天*/
    public static final String DAYS31 ="^((0?[1-9])|((1|2)[0-9])|30|31)$";
}
